package FileIO;

import java.io.*;

/**
 * 输入流
 * 输入流是字节输入流，字节输入流是抽象类，不能直接创建对象
 * 创建输入流对象
 * 创建输入流对象时，必须指定文件路径
 * 创建输入流对象时，文件必须存在
 * 创建输入流对象时，文件路径必须正确
 * 创建输入流对象时，文件必须可读
 * 创建输入流对象时，文件必须可写
 * 创建输入流对象时，文件必须可执行
 */
public class InputStreamDemo1 {
    public static void main(String[] args) throws IOException {
//        InputStream inputStream = new FileInputStream("D:/test.txt");

//        while (true) {
//            int n = inputStream.read();
//            if (n == -1) {
//                System.out.println("文件已读完");
//                break;
//            }
//            System.out.printf("%x\n",n);
//        }

//        while (true) {
//            byte[] bytes = new byte[1024];
//            int n = inputStream.read(bytes);
//            if (n == -1) {
//                System.out.println("文件已读完");
//                break;
//            }
//            for (int i = 0; i < n; i++) {
//                System.out.printf("%x\n",bytes[i]);
//            }
//        }

        // try-catch
//        InputStream inputStream = null;
//        try {
//            inputStream = new FileInputStream("D:/text.txt");
//            while (true) {
//                int n = inputStream.read();
//                if (n == -1) {
//                    System.out.println("文件已读完");
//                    break;
//                }
//                System.out.printf("%x\n",n);
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        } finally {
//            if (inputStream != null) {
//                inputStream.close();
//            }
//        }

        // try-with-resources 最佳方式
        try(InputStream inputStream = new FileInputStream("D:/test.txt")) {
            while (true) {
                int n = inputStream.read();
                if (n == -1) {
                    System.out.println("文件已读完");
                    break;
                }
                System.out.printf("%x\n",n);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
